﻿using System;
using System.Collections.ObjectModel;
using System.Threading.Tasks;
using Infos.InterviewApp.InfoAppService;
using LibQuestionIs.Models;
using Windows.System.UserProfile;

namespace Infos.InterviewApp.Manager
{
    public class ManagerRisultati : BaseManager
    {
        public async Task<ObservableCollection<EsitoPunteggio>> GetListPunteggio()
        {
            var client = new InfoAppService.QuizServiceClient();
            var response = await client.GetListPunteggioAsync(new InfoAppService.GetListPunteggioRequest() { /*PunteggioAttuale = DFO.PunteggioPartita*/ });
            ObservableCollection<EsitoPunteggio> esito = new ObservableCollection<EsitoPunteggio>();
            foreach (var item in response.ListPunteggi)
            {
                esito.Add(new EsitoPunteggio()
                {
                    Moltiplicatore = item.Moltiplicatore,
                    Punteggio = item.Punteggio,
                    Tipologia = item.TipologiaTest,
                    UserName = item.UserName,
                });
            }
            return esito;
        }

        public async Task<ObservableCollection<EsitoPunteggioTipologia>> GetAllListPunteggi()
        {
            var client = new InfoAppService.QuizServiceClient();
            var response = await client.GetAllListPunteggiAsync(new InfoAppService.GetListPunteggioRequest());
            ObservableCollection<EsitoPunteggioTipologia> listAllPunteggi = new ObservableCollection<EsitoPunteggioTipologia>();
            foreach (var listaPunteggio in response.ListAllPunteggi)
            {
                EsitoPunteggioTipologia punt = new EsitoPunteggioTipologia() { EsitoPunteggi = new ObservableCollection<EsitoPunteggio>() };
                foreach (var item in listaPunteggio.ListPunteggi)
                {
                    punt.EsitoPunteggi.Add(new EsitoPunteggio()
                    {
                        Moltiplicatore = item.Moltiplicatore,
                        Punteggio = item.Punteggio,
                        Tipologia = item.TipologiaTest,
                        UserName = item.UserName,
                        Immagine=  string.Format("ms-appx:///Assets/pos{0}.png", listaPunteggio.ListPunteggi.IndexOf(item) + 1),
                    });
                }
                punt.Tipologia = punt.EsitoPunteggi[0].Tipologia;
                listAllPunteggi.Add(punt);
            }
            return listAllPunteggi;
        }

        public async Task<SetPunteggioResponse> SetPunteggioPartita()
        {
            SetPunteggioNewRequest request = new SetPunteggioNewRequest()
            {
                Request = new PunteggioService()
                {
                    IdDifficolta = DataFlowObject.Difficolta.IDDifficolta,
                    IdTipologiaTest = (int)DataFlowObject.TipologiaTest.IDTest,
                    Punteggio = DataFlowObject.EsitoPartita.Punteggio + Convert.ToInt32(DataFlowObject.EsitoPartita.TempoRimanente.TotalSeconds),
                    UserName = await UserInformation.GetDisplayNameAsync(),
                    Moltiplicatore = DataFlowObject.MaxMoltiplicatore,
                    SecondiRimanenti = Convert.ToInt32(DataFlowObject.EsitoPartita.TempoRimanente.TotalSeconds),
                }
            };

            SetPunteggioResponse response = await new InfoAppService.QuizServiceClient().SetPunteggioV2Async(request);
            return response;
        }
    
    }
}
